home *** CD-ROM | disk | FTP | other *** search
- // GETINFO SCRIPTING
- // Filmweb (PL) info & small picture, v2004 by BestiaPL
-
- (***************************************************
- * Movie information & small picture importation *
- * script for Filmweb http://www.filmweb.pl *
- * (c) 2002 Piotr Kardasz *
- * 05.10.2003 Improvements made by Adma's *
- * 07.10.2003 Modifications by Adma's to import *
- * small picture *
- * 03.03.2004 Modyfications by BestiaPL *
- * support for new movie database links *
- * *
- * For use with Ant Movie Catalog 3.4.2 *
- * www.antp.be/software/moviecatalog *
- * *
- * This program is free software; you can *
- * redistribute it and/or modify it under the *
- * terms of the GNU General Public License as *
- * published by the Free Software Foundation; *
- * either version 2 of the License, or (at your *
- * option) any later version. *
- ***************************************************)
-
- program FilmWeb;
- var
- MovieName: string;
-
- function FindLine(Pattern: string; List: TStringList; StartAt: Integer): Integer;
- var
- i: Integer;
- begin
- result := -1;
- if StartAt < 0 then
- StartAt := 0;
- for i := StartAt to List.Count-1 do
- if Pos(Pattern, List.GetString(i)) <> 0 then
- begin
- result := i;
- Break;
- end;
- end;
-
- procedure DelSpace(var Value: String);
- var
- FullValue: String;
- Counter: Integer;
- begin
- if Value <> '' then
- begin
- FullValue := FullValue + StrGet(Value, 1);
- for Counter := 2 to Length(Value) do
- begin
- if StrGet(Value, Counter) <> ' ' then
- FullValue := FullValue + StrGet(Value, Counter)
- else
- if StrGet(FullValue, Length(FullValue)) <> ' ' then
- FullValue := FullValue + ' ';
- end;
- Value := FullValue;
- end
- end;
-
- procedure DecodeHTML(var Value: String);
- var
- FullValue, CharCode: String;
- Counter: Integer;
- begin
- if Value <> '' then
- begin
- FullValue := '';
- Counter := 1;
- repeat
- if StrGet(Value, Counter) <> '&' then
- begin
- CharCode := copy(Value, Counter, 1);
- case CharCode of
- '▒': CharCode := '╣';
- '╢': CharCode := '£';
- 'í': CharCode := 'Ñ';
- '╝': CharCode := 'ƒ';
- 'ª': CharCode := 'î';
- '¼': CharCode := 'Å';
- end;
- FullValue := FullValue + CharCode;
- Counter := Counter + 1;
- end
- else
- begin
- CharCode := copy(Value, Counter, 7);
- case CharCode of
- 'ą': FullValue := FullValue + '╣';
- 'ć': FullValue := FullValue + 'µ';
- 'ę': FullValue := FullValue + 'Ω';
- 'ł': FullValue := FullValue + '│';
- 'ń': FullValue := FullValue + '±';
- 'ó': FullValue := FullValue + '≤';
- 'ś': FullValue := FullValue + '£';
- 'ź': FullValue := FullValue + 'ƒ';
- 'ż': FullValue := FullValue + '┐';
- 'Ą': FullValue := FullValue + 'Ñ';
- 'Ć': FullValue := FullValue + '╞';
- 'Ę': FullValue := FullValue + '╩';
- 'Ł': FullValue := FullValue + 'ú';
- 'Ń': FullValue := FullValue + '╤';
- 'Ó': FullValue := FullValue + '╙';
- 'Ś': FullValue := FullValue + 'î';
- 'Ź': FullValue := FullValue + 'Å';
- 'Ż': FullValue := FullValue + '»';
- 'Š': FullValue := FullValue + ' ';
- 'š': FullValue := FullValue + 'í';
- 'Ţ': FullValue := FullValue + 'í';
- 'ţ': FullValue := FullValue + 'ú';
- 'Ť': FullValue := FullValue + 'ñ';
- 'ť': FullValue := FullValue + 'Ñ';
- 'Ŧ': FullValue := FullValue + 'î';
- 'ŧ': FullValue := FullValue + 'º';
- 'Ũ': FullValue := FullValue + '¿';
- 'ũ': FullValue := FullValue + '⌐';
- 'Ű': FullValue := FullValue + '¬';
- 'ű': FullValue := FullValue + '½';
- 'Ų': FullValue := FullValue + '¼';
- 'ų': FullValue := FullValue + '¡';
- 'Ŵ': FullValue := FullValue + '«';
- 'ŵ': FullValue := FullValue + '»';
- 'Ŷ': FullValue := FullValue + '░';
- 'ŷ': FullValue := FullValue + '▒';
- 'Ÿ': FullValue := FullValue + '▓';
- 'ƀ': FullValue := FullValue + '┤';
- 'Ɓ': FullValue := FullValue + '╡';
- 'Ƃ': FullValue := FullValue + '╢';
- 'ƃ': FullValue := FullValue + '╖';
- 'Ƅ': FullValue := FullValue + '╕';
- 'ƅ': FullValue := FullValue + '╣';
- 'Ɔ': FullValue := FullValue + '║';
- 'Ƈ': FullValue := FullValue + '╗';
- 'ƈ': FullValue := FullValue + '╝';
- 'Ɖ': FullValue := FullValue + '╜';
- 'Ɛ': FullValue := FullValue + '╛';
- 'Ƒ': FullValue := FullValue + '┐';
- 'ƒ': FullValue := FullValue + '└';
- 'Ɠ': FullValue := FullValue + '┴';
- 'Ɣ': FullValue := FullValue + '┬';
- 'ƕ': FullValue := FullValue + '├';
- 'Ɩ': FullValue := FullValue + '─';
- 'Ɨ': FullValue := FullValue + '┼';
- 'Ƙ': FullValue := FullValue + '╞';
- 'ƙ': FullValue := FullValue + '╟';
- 'Ȁ': FullValue := FullValue + '╚';
- 'ȁ': FullValue := FullValue + '╔';
- 'Ȃ': FullValue := FullValue + '╩';
- 'ȃ': FullValue := FullValue + '╦';
- 'Ȅ': FullValue := FullValue + '╠';
- 'ȅ': FullValue := FullValue + '═';
- 'Ȇ': FullValue := FullValue + '╬';
- 'ȇ': FullValue := FullValue + '╧';
- 'Ȉ': FullValue := FullValue + '╨';
- 'ȉ': FullValue := FullValue + '╤';
- 'Ȑ': FullValue := FullValue + '╥';
- 'ȑ': FullValue := FullValue + '╙';
- 'Ȓ': FullValue := FullValue + '╘';
- 'ȓ': FullValue := FullValue + '╒';
- 'Ȕ': FullValue := FullValue + '╓';
- 'ȕ': FullValue := FullValue + '╫';
- 'Ȗ': FullValue := FullValue + '╪';
- 'ȗ': FullValue := FullValue + '┘';
- 'Ș': FullValue := FullValue + '┌';
- 'ș': FullValue := FullValue + '█';
- 'Ƞ': FullValue := FullValue + '▄';
- 'ȡ': FullValue := FullValue + '▌';
- 'Ȣ': FullValue := FullValue + '▐';
- 'ȣ': FullValue := FullValue + '▀';
- 'Ȥ': FullValue := FullValue + 'α';
- 'ȥ': FullValue := FullValue + 'ß';
- 'Ȧ': FullValue := FullValue + 'Γ';
- 'ȧ': FullValue := FullValue + 'π';
- 'Ȩ': FullValue := FullValue + 'Σ';
- 'ȩ': FullValue := FullValue + 'σ';
- 'Ȱ': FullValue := FullValue + 'µ';
- 'ȱ': FullValue := FullValue + 'τ';
- 'Ȳ': FullValue := FullValue + 'Φ';
- 'ȳ': FullValue := FullValue + 'Θ';
- 'ȴ': FullValue := FullValue + 'Ω';
- 'ȵ': FullValue := FullValue + 'δ';
- 'ȶ': FullValue := FullValue + '∞';
- 'ȷ': FullValue := FullValue + 'φ';
- 'ȸ': FullValue := FullValue + 'ε';
- 'ȹ': FullValue := FullValue + '∩';
- 'ɀ': FullValue := FullValue + '≡';
- 'Ɂ': FullValue := FullValue + '±';
- 'ɂ': FullValue := FullValue + '≥';
- 'Ƀ': FullValue := FullValue + '≤';
- 'Ʉ': FullValue := FullValue + '⌠';
- 'Ʌ': FullValue := FullValue + '⌡';
- 'Ɇ': FullValue := FullValue + '÷';
- 'ɇ': FullValue := FullValue + '≈';
- 'Ɉ': FullValue := FullValue + '°';
- 'ɉ': FullValue := FullValue + '∙';
- 'ɐ': FullValue := FullValue + '·';
- 'ɑ': FullValue := FullValue + '√';
- 'ɒ': FullValue := FullValue + 'ⁿ';
- 'ɓ': FullValue := FullValue + '²';
- 'ɔ': FullValue := FullValue + '■';
- 'ɕ': FullValue := FullValue + ' ';
- '%DF;': FullValue := FullValue + '▀';
- '4': FullValue := FullValue + '"';
- else
- FullValue := FullValue + CharCode;
- end;
- Counter := Counter + 7;
- end;
- until Counter > Length(Value);
- HTMLDecode(FullValue);
- Value := FullValue;
- end
- end;
-
- procedure AddMoviesTitles(Page: TStringList; var LineNr: Integer);
- var
- Line: string;
- MovieTitle, MovieAddress: string;
- StartPos, EndPos: Integer;
- begin
- LineNr := FindLine('> [film]<', Page, LineNr);
- if LineNr > -1 then
- begin
- PickTreeAdd('Znaleziono filmy:', '');
- Line := Page.GetString(LineNr);
- repeat
- repeat
- StartPos := pos('> [film]<', Line) + 19;
- Line := copy(Line, StartPos, Length(Line) - StartPos);
- StartPos := pos('href="', Line) + 6;
- Line := copy(Line, StartPos, Length(Line) - StartPos);
- MovieAddress := copy(Line, 1, pos('">', Line) - 1);
- StartPos := pos('">', Line) + 2;
- Line := copy(Line, StartPos, Length(Line) - StartPos);
- MovieTitle := copy(Line, 1, pos('</a>', Line) - 1);
- DecodeHTML(MovieTitle);
- HTMLRemoveTags(MovieTitle);
- if pos('http', MovieAddress) = 0 then
- MovieAddress := 'http://www.filmweb.pl/' + MovieAddress;
- PickTreeAdd(MovieTitle, MovieAddress);
-
- until pos('> [film]<', Line) = 0;
- LineNr := LineNr + 1;
- Line := Page.GetString(LineNr);
- until pos('> [film]<', Line) = 0;
- end
- else
- break;
- end;
-
- procedure AnalyzePage(Address: string);
- var
- Page: TStringList;
- LineNr: Integer;
- begin
- Page := TStringList.Create;
- Page.Text := GetPage(Address);
- // if pos('wyniki wyszukiwania [Filmweb.pl]', Page.Text) = 0 then
- if pos('yniki wyszukiwania', Page.Text) = 0 then
- AnalyzeMoviePage(Page)
- else
- begin
- PickTreeClear;
- LineNr := 0;
- AddMoviesTitles(Page, LineNr);
- if PickTreeExec(Address) then
- AnalyzePage(Address);
- end;
- Page.Free;
- end;
-
- procedure AnalyzeMoviePage(Page: TStringList);
- var
- Line, Value, FullValue: string;
- LineNr, Counter: Integer;
- StartPos, EndPos: Integer;
- begin
-
- // Tytu│ polski
- LineNr := FindLine('name="tytul">', Page, 0);
- if LineNr > -1 then
- begin
- Line := Page.GetString(LineNr);
- StartPos := pos('name="tytul">', Line) + 12;
- Line := copy(Line, StartPos, Length(Line) - StartPos);
- StartPos := pos('>', Line) + 1;
- Line := copy(Line, StartPos, Length(Line) - StartPos);
-
- StartPos:= pos(' (aka', Line);
- if StartPos > 0
- then Value := copy(Line, 1, StartPos - 1)
- else Value := copy(Line, 1, pos('</column>', AnsiLowerCase(Line)) - 1);
- DecodeHTML(Value);
- SetField(fieldTranslatedTitle, Value);
- end
-
- // Tytu│ oryginalny
- LineNr := FindLine('name="tytulorg">', Page, 0);
- if LineNr > -1 then
- begin
- Line := Page.GetString(LineNr);
- StartPos := pos('name="tytulorg">', Line) + 15;
- Line := copy(Line, StartPos, Length(Line) - StartPos);
- StartPos := pos('>', Line) + 1;
- Line := copy(Line, StartPos, Length(Line) - StartPos);
- Value := copy(Line, 1, pos('</column>', AnsiLowerCase(Line)) - 1);
- DecodeHTML(Value);
- SetField(fieldOriginalTitle, Value);
- end
- LineNr:= FindLine('<br><span class="text">', Page, 0);
- if LineNr > -1
- then begin
- Line := Page.GetString(LineNr);
- StartPos := pos('<br><span class="text">', Line) + 23;
- Line := copy(Line, StartPos, Length(Line) - StartPos);
- StartPos := pos('(', Line) + 1;
- Line := copy(Line, StartPos, Length(Line) - StartPos);
- Value := copy(Line, 1, pos('</span><br>', AnsiLowerCase(Line)) - 2);
- DecodeHTML(Value);
- SetField(fieldOriginalTitle, Value);
- end
-
- // îrednia ocena
- LineNr := FindLine('rednia ocena:', Page, 0);
- if LineNr > -1 then
- begin
- Line := Page.GetString(LineNr);
- StartPos := pos('rednia ocena:', Line) + 12;
- Line := copy(Line, StartPos, Length(Line) - StartPos);
- StartPos := pos('">', Line) + 2;
- Line := copy(Line, StartPos, Length(Line) - StartPos);
- Value := IntToStr(Round(StrToInt(StrGet(Line, 1), 0) + (StrToInt(StrGet(Line, 3), 0) / 10) + (StrToInt(StrGet(Line, 4), 0) / 100)));
- SetField(fieldRating, Value);
- end
-
- // Kategoria
- LineNr := FindLine('>gatunek:</td>', Page, 0);
- if LineNr > -1 then
- begin
- Line := Page.GetString(LineNr);
- StartPos := pos('>gatunek:</td>', Line) + 10;
- Line := copy(Line, StartPos, Length(Line) - StartPos);
- StartPos := pos('class="text"', Line) + 12;
- Line := copy(Line, StartPos, Length(Line) - StartPos);
- StartPos := pos('">', Line) + 2;
- Line := copy(Line, StartPos, Length(Line) - StartPos);
- Value := copy(Line, 1, pos('</td>', Line) - 1);
- DecodeHTML(Value);
- SetField(fieldCategory, Value);
- end
-
- // Kraj
- LineNr := FindLine('>produkcja:</td>', Page, 0);
- if LineNr > -1 then
- begin
- Line := Page.GetString(LineNr);
- StartPos := pos('>produkcja:</td>', Line) + 13;
- Line := copy(Line, StartPos, Length(Line) - StartPos);
- StartPos := pos('class="text"', Line) + 12;
- Line := copy(Line, StartPos, Length(Line) - StartPos);
- StartPos := pos('">', Line) + 2;
- Line := copy(Line, StartPos, Length(Line) - StartPos);
- Value := copy(Line, 1, pos('</td>', Line) - 1);
- DecodeHTML(Value);
- SetField(fieldCountry, Value);
- end
-
- // Rok produkcji
- LineNr := FindLine('>data produkcji:</td>', Page, 0);
- if LineNr > -1 then
- begin
- Line := Page.GetString(LineNr);
- StartPos := pos('>data produkcji:</td>', Line) + 12;
- Line := copy(Line, StartPos, Length(Line) - StartPos);
- StartPos := pos('class="text"', Line) + 12;
- Line := copy(Line, StartPos, Length(Line) - StartPos);
- StartPos := pos('">', Line) + 2;
- Line := copy(Line, StartPos, Length(Line) - StartPos);
- Value := copy(Line, 1, pos('</td>', Line) - 1);
- SetField(fieldYear, Value);
- end
-
- // Re┐yseria
- LineNr := FindLine('yseria:</td>', Page, 0);
- if LineNr > -1 then
- begin
- Line := Page.GetString(LineNr);
- StartPos := pos('yseria:</td>', Line) + 12;
- Line := copy(Line, StartPos, Length(Line) - StartPos);
- Value := copy(Line, 1, pos('</a></td></tr>', Line) - 1);
- HTMLRemoveTags(Value);
- DecodeHTML(Value);
- SetField(fieldDirector, Value);
- end
-
- // Producent
- // LineNr := FindLine('>producent:</td>', Page, 0);
- // if LineNr > -1 then
- // begin
- // Line := Page.GetString(LineNr);
- // StartPos := pos('>producent:</td>', Line) + 16;
- // Line := copy(Line, StartPos, Length(Line) - StartPos);
- // Value := copy(Line, 1, pos('</a></td></tr>', Line) - 1);
- // HTMLRemoveTags(Value);
- // DecodeHTML(Value);
- // SetField(fieldProducer, Value);
- // end
-
- // Czas trwania
- LineNr := FindLine('>czas trwania:</td>', Page, 0);
- if LineNr > -1 then
- begin
- Line := Page.GetString(LineNr);
- StartPos := pos('>czas trwania:</td>', Line) + 19;
- Line := copy(Line, StartPos, Length(Line) - StartPos);
- StartPos := pos('class="text"', Line) + 12;
- Line := copy(Line, StartPos, Length(Line) - StartPos);
- StartPos := pos('">', Line) + 2;
- Line := copy(Line, StartPos, Length(Line) - StartPos);
- Value := copy(Line, 1, pos(' min.</td>', Line) - 1);
- SetField(fieldLength, Value);
- end
-
- // Opis filmu
- LineNr := FindLine('O filmie</b>', Page, 0);
- if LineNr > -1 then
- begin
- Line := Page.GetString(LineNr);
- StartPos := pos('O filmie</b>', Line) + 11;
- Line := copy(Line, StartPos, Length(Line) - StartPos);
- StartPos := pos('">', Line) + 2;
- Line := copy(Line, StartPos, Length(Line) - StartPos);
- Value := copy(Line, 1, pos('<', Line) - 1);
- HTMLRemoveTags(Value);
- DecodeHTML(Value);
- Value:=StringReplace(Value, chr(34),chr(39)); // zamiana cudzyslowu na apostrof
- DelSpace(Value);
- SetField(fieldDescription, Value);
- end
-
- // Obsada
- LineNr := FindLine('Obsada</b>', Page, 0);
- if LineNr > -1 then
- begin
- Line := Page.GetString(LineNr);
- StartPos := pos('Obsada</b>', Line) + 10;
- Line := copy(Line, StartPos, Length(Line) - StartPos);
- Value := '';
- repeat
- if (pos('<a clas', Line) > 0) AND (pos('<a clas', Line) < pos(':</a></td>', Line)) then
- begin
- StartPos:= Pos('<a clas', Line) + 7;
- Line:= Copy(Line, StartPos, Length(Line) - StartPos);
- StartPos:= Pos('">', Line) + 2;
- Line:= Copy(Line, StartPos, Length(Line) - StartPos);
- Value:= Value + Copy(Line, 1, Pos(':</a></td>', Line) - 1) + ', ';
- StartPos:= Pos(':</a></td>', Line) + 10;
- Line:= Copy(Line, StartPos, Length(Line) - StartPos);
- end
- until (pos('<a clas', Line) = 0) OR (pos('<a clas', Line) > pos(':</a></td>', Line));
- Value := copy(Value, 1, Length(Value) - 2);
- DecodeHTML(Value);
- SetField(fieldActors, Value);
- end
-
- //URL
- begin
- setField(fieldURL, 'http://www.filmweb.pl/searchtopic.xml?gdzie=1&key='+UrlEncode(MovieName));
- end
-
- //Foto
- LineNr:= FindLine('height="118" src="http://gfx.filmweb.pl/bin2/f/', Page, 0);
- if LineNr > -1
- then begin
- Line:= Page.GetString(LineNr);
- StartPos:= Pos('height="118" src="http://gfx.filmweb.pl/bin2/f/', Line);
- Line:= Copy(Line, StartPos, Length(Line));
- Line:= Copy(Line, Pos('http://', Line), Length(Line));
- Value:= Copy(Line, 1, Pos('" vspace=', Line) - 1);
- HTMLRemoveTags(Value);
- DecodeHTML(Value);
- DelSpace(Value);
- GetPicture(Value, False); // False = nie przechowuj zdjΩcia na zewnΩtrz ; przechowuj w pliku katalogu
- end
-
- DisplayResults;
- end;
-
- begin
- if CheckVersion(3,4,2) then
- begin
- MovieName := GetField(fieldOriginalTitle);
- if MovieName = '' then
- MovieName := GetField(fieldTranslatedTitle);
- if Input('FilmWeb Import', 'Podaj tytu│ filmu:', MovieName) then
- begin
- AnalyzePage('http://www.filmweb.pl/searchtopic.xml?gdzie=1&key='+UrlEncode(MovieName));
- end;
- end else
- ShowMessage('Skrypt wymaga programu Ant Movie Catalog w wersji 3.4.2 lub nowszej');
- end.
-
-
-